<?php
//$_POST  $_GET $_REQUEST PHP提供的全局数组
$username = trim($_POST['username']);   //数字下标，索引数组。非数字下标（字符串下标），关联数组
$pw = trim($_POST['pw']); //变量命名规则：只能由字母、数字、下划线构成。且不能由数字开头。
$cpw = trim($_POST['cpw']);
$email = trim($_POST['email']);

//对数据进行必要的验证
if(!preg_match('/^[a-zA-Z\d]{3,10}$/',$username)){
    //preg_match如果匹配到字符串，则返回1，否则返回0
    echo "<script>alert('用户名必填，且只能由大小写字符和（或）数字构成，且长度在3到10个字符之间');history.back();</script>";
    exit;
}
if(!preg_match('/^[a-zA-Z\d_*]{6,10}$/',$pw)){
    //preg_match如果匹配到字符串，则返回1，否则返回0
    echo "<script>alert('密码必填，且只能由大小写字符和（或）数字，以及_、*构成，且长度在6到10个字符之间');history.back();</script>";
    exit;
}
if($cpw !== $pw){
    echo "<script>alert('确认密码和密码必须相同。');history.back();</script>";
    exit;
}
if(!empty($email)){
    if(!preg_match('/^[a-zA-Z\d_\-]+@([a-zA-Z\d]+\.)+(com|cn|net|org)$/',$email)){
        //preg_match如果匹配到字符串，则返回1，否则返回0
        echo "<script>alert('信箱格式不对。');history.back();</script>";
        exit;
    }
}
//接下来，连接数据库，并将数据写入数据库
include_once ('conn.php');
//第三步，设置查询语句（将前端表单数据写入数据表）

//检查当前用户名是否被占用。我们要求用户中必须唯一。如果被占用，则给出警告提示，并返回上一个页面，要求用户重新输入新的用户名。

$sql = "select username from userinfo where username = '$username'";
$result = mysqli_query($conn,$sql);
//接下来判断一下$result中是否有记录
if(mysqli_num_rows($result)){//返回结果可能是0，1。
    //说明数据表中已经有此用户名
    echo "<script>alert('此用户名已经被占用。');history.back();</script>";
    exit;
}
$sql = "insert into userinfo (username,pw,email) values ('$username','" . md5($pw). "','$email')";
//第四步，执行查询
$result = mysqli_query($conn,$sql);
/*echo $sql;
echo "<br>";
echo mysqli_error($conn);*/
if($result){
    echo "<script>alert('用户注册成功。');history.back();</script>";
}
else{
    echo "<script>alert('用户注册失败。');history.back();</script>";
}